PostgreSQL pg_dump
1 pg_dump 命令说明:
pg_dump --help
pg_dump可将某个database转储为文本文件或者其他格式文件。
用法:
pg_dump [选项]... [database名]
通用选项:
-f, --file=FILENAME 输出文件名或者目录名
-F, --format=c|d|t|p 输出文件格式(自定义格式、目录格式、TAR包格式、纯文
本)
-j, --jobs=NUM 使用这多个并行作业进行转储
-v, --verbose 详细信息模式
-Z, --compress=0-9 压缩格式的压缩级别
--lock-wait-timeout=TIMEOUT 等待表锁超时后操作失败
--no-sync 不等待变更安全写入磁盘 ➊
--help 显示此帮助信息并退出
--version 输出版本信息并退出
控制输出内容的选项:
-a, --data-only 仅转储数据,而不转储schema
-b, --blobs 在转储中包含大对象
-B, --no-blobs 不对大对象进行备份 ➋
-c, --clean 在重新创建数据库对象之前清除(删除)数据库对象
-C, --create 包含用于在转储中创建数据库的命令
-E, --encoding=ENCODING 以ENCODING编码格式转储数据
-n, --schema=SCHEMA 仅转储命名schema
-N, --exclude-schema=SCHEMA 不转储命名schema
-o, --oids 在转储中包含OID
-O, --no-owner 以纯文本格式跳过对象所有权的恢复
-s, --schema-only 仅转储schema,而不转储数据
-S, --superuser=NAME 要以纯文本格式使用的超级用户名
-t, --table=TABLE 仅转储命名表
-T, --exclude-table=TABLE 不转储命名表
-x, --no-privileges 不转储特权(grant/revoke)
-Z, 0..9 备份的压缩级别
--binary-upgrade 仅供升级工具使用
--column-inserts 以带有列名的INSERT命令的形式转储数据
--disable-dollar-quoting 禁用美元(符号)引号,而是使用SQL标准引号
--disable-triggers 在仅恢复数据期间禁用触发器
--enable-row-security 启用行级安全控制(只导出用户有权访问的数据)➌
--exclude-table-data=TABLE 不转储命名表中的数据
--if-exists 删除对象时使用IF EXISTS
--inserts 以INSERT命令(而非COPY命令)的形式转储数据
--no-publications 不导出逻辑复制发布端数据源定义 ➍
--no-security-labels 不转储安全标签分配
--no-subscriptions 不导出逻辑复制订阅端的数据订阅定义 ➎
--no-synchronized-snapshots 在并行作业中不使用同步快照
--no-tablespaces 不转储表空间分配
--no-unlogged-table-data 不转储不记录WAL日志的表的数据
--quote-all-identifiers 所有标识符加引号,即使不是关键字也加
--section=SECTION 转储命名部分(包括三个部分:pre-data、data以及post
-data。data部分包含表记录数据、大对象数据以及序列的
值;post-data部分包含索引、触发器、规则和约束(除了
验证检查约束)的定义;pre-data部分包含此外其他所有
的对象定义)
--serializable-deferrable 等待直至转储正常运行为止
--snapshot=SNAPSHOT 为导出使用指定的快照 ➏
--strict-names 要求每个表和/或schema包括模式以匹配至少一个实体 ➐
--use-set-session-authorization 使用 SESSION AUTHORIZATION 命令代替ALTER OWNER
命令来设置所有权
连接选项:
-d, --dbname=DBNAME 要转储的数据库
-h, --host=主机名 数据库服务器主机或套接字目录
-p, --port=端口号 数据库服务器端口号
-U, --username=名称 作为指定数据库用户连接
-w, --no-password 永远不提示输入密码
-W, --password 强制要求输入密码(应该自动发生)
--role=ROLENAME 在转储之前执行SET ROLE命令
环境变量:
PGDATABASE
PGHOST
PGOPTIONS
PGPORT
PGUSER
PG_COLOR 消息的颜色,可为(always,auto,never)
2 pg_dump 示例
- 使用自定义格式,包含blob 数据,显示打印信息,压缩备份数据,备份app数据库.
pg_dump -F c -b -v -c -Z 9 -f app.backup app
2.使用sql 脚本文件. 排除app 数据库中的PUBLIC 模式.且使用标准sql ,插入语句使用全字段.
pg_dump -F p -b -v -N public --column-inserts -Ccf app.backup app
- 使用目录格式,并发为3 , 包含创建和删除数据库语句.
pg_dump -F d -j 3 -Ccf app.backup app;
- 指定包含 cus1,cus2, schema 数据.
pg_dump -F d -b -v -n cus1 -n cus2 -Ccf app.backup app
- 使用 目录格式,排除app 数据库中的public 模式.
pg_dump -F d -b -v -N public -Ccf app.backup app
- 使用sql 脚本文件输出.
pg_dump -F p -b -v -Ccf app.backup app;
- 不导出权限.
pg_dump -F d -j 3 -Cxcf app.backup app;
pg_dump -F d -b -v -t *.cus* -Ccf app.backup app